In non-volatile memory storage systems, blocks of data stored in the memory are periodically garbage collected (i.e., compacted or consolidated) to reclaim a memory's storage capacity. In a typical garbage collection operation, valid data from a block are copied to another block. After the valid data are transferred, the original block is erased to provide storage capacity. Currently, a write operation can trigger a non-volatile memory storage system to perform a garbage collection operation. The host allows a fixed amount of time for the execution of the write operation, which includes the garbage collection operation, if triggered. For example, the Secure Digital protocol limits the amount of time to 250 milliseconds. A timeout error can result if the non-volatile memory storage system exceeds this fixed amount of time in a write operation.
The sizes of memory blocks have been increasing due to increased capacity, higher parallelism, and die size scaling. Accordingly, execution of write operations are taking longer because more data are transferred. A garbage collection operation can therefore easily exceed the fixed amount of time allocated to the write operation. As a result, there is a need to prevent the timeout errors when the amount of time to perform a garbage collection operation exceeds the fixed amount of time.